#include "Logger.h"
#include <iostream>
#include "Timestamp.h"

// 获取日志唯一的示例对象
Logger &Logger::instance() {
  static Logger instance; // 静态局部变量，确保只创建一次
  return instance;
};
// 设置日志级别
void Logger::setlogLevel(int level) {
  logLevel_ = level; // 设置日志级别
};

// 获取当前日志级别
int Logger::getLogLevel() const {
  return logLevel_; // 返回当前日志级别
};
// 写日志 [级别信息] time : message
void Logger::log(const char *message) {
  switch (logLevel_) {
    case INFO:
        std::cout << "[INFO] "; // 输出普通信息
        break;
    case ERROR:
        std::cout << "[ERROR] "; // 输出错误信息
        break;
    case FATAL:
        std::cout << "[FATAL] " ; // 输出致命错误信息
        break;
    case DEBUG:
        std::cout << "[DEBUG] " ; // 输出调试信息
        break;
    default:
        std::cout << "[UNKNOWN] "; // 输出未知级别信息
        break;
  }
  // 输出时间戳和消息
  std::cout << Timestamp::now().toString() << " : " << message
            << std::endl; // 输出时间戳和消息
};

// int main() {
//   LOG_INFO("This is an info message with value: %d", 42);
//   return 0;
// }